package com.chenfan.mcn.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.common.extension.mybatisplus.enhanced.EnhancedBaseMapper;
import com.chenfan.mcn.model.McnPage;
import com.chenfan.mcn.model.MonthlyTarget;
import com.chenfan.mcn.model.dto.MonthlyTargetSearchDTO;
import com.chenfan.mcn.model.vo.MonthlyTargetList;
import com.chenfan.mcn.model.vo.MonthlyTargetPageVO;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 部门目标 Mapper 接口
 * </p>
 *
 * @author lizhejin
 * @since 2021-10-19
 */
public interface MonthlyTargetMapper extends EnhancedBaseMapper<MonthlyTarget> {

    /**
     * 获取月度目标
     *
     * @param dto       {@link MonthlyTargetSearchDTO}
     * @param startTime {@link String}
     * @param endTime   {@link String}
     * @return {@link List<MonthlyTargetList>}
     */
    List<MonthlyTargetList> targetList(@Param("dto") MonthlyTargetSearchDTO dto, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 获取月度总销售额
     *
     * @param startTime {@link String}
     * @param endTime   {@link String}
     * @return BigDecimal
     */
    BigDecimal getTotalMonthlySales(@Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 指定部门月度目标
     *
     * @param mcnPage   {@link McnPage}
     * @param dto       {@link MonthlyTargetSearchDTO}
     * @return {@link Page}
     */
    Page<MonthlyTargetPageVO> targetPage(McnPage<MonthlyTargetPageVO> mcnPage, @Param("dto") MonthlyTargetSearchDTO dto);
}
